%{
#include <analex.h>
#define printLst printf(yytext);fflush(stdout);fprintf(lstFic, yytext);


char u_lex[80];
unsigned int ligne=1;


%}

%%

\-?[0-9]+ {
	printLst;
	strcpy(u_lex,yytext);
	return CONST_ENTIER; 
}
\-?[0-9]*\.[0-9]+ {
	printLst;
	strcpy(u_lex,yytext);
	return CONST_REEL;
}
(true|false) {
	printLst;
	strcpy(u_lex,yytext);
	return CONST_BOOL;
}
\"[^\"]*\" {
	printLst;
	strcpy(u_lex,yytext);
   return CONST_CHAINE;
}

\'[^\']\' {
	printLst;
	strcpy(u_lex,yytext);
   return CONST_CHAR;
}
([a-zA-Z][0-9a-zA-Z_-]*) {
	printLst;
	strcpy(u_lex,yytext);
   return IDENT;
}

(\*|\/|\+|\-) {
	printLst;
	strcpy(u_lex,yytext);
   return OP_ARITH;
}

(\.|\-\>) {
	printLst;
	strcpy(u_lex,yytext);
   return OP_INT;
}
(\:\=) {
	printLst;
	strcpy(u_lex,yytext);
   return OP_AFFECT;
}

(\<\=|\>|\<|\>\=|\<\>|==|\!\=) {
	printLst;
	strcpy(u_lex,yytext);
   return OP_BOOL;
}

(\.\.) {
	printLst;
	strcpy(u_lex,yytext);
   return INTERVAL;
}
(\.|\,|\;|\(|\)|\)|\[|\]|\:) {
	printLst;
	strcpy(u_lex,yytext);
   return SEPARATEUR;
}

"{"[^}\n]*"}" {}

\n {++ligne; printLst;}

" " | \t {printLst;}

. {printLst;}

%%

